package examtest;

import java.util.concurrent.TimeUnit;

//volidate可见性测试
//没想出来其他实现方式，最后采用老师的例子
public class homewoek3 {
    /* volatile */ boolean b = true;

    void f1() {
        System.out.println("start");
        while(b){
            //如果没有这行，线程会继续，如果加上，会在b的值变化后停止，这是不可见性
//            System.out.println("b的值====="+b);
        }
        System.out.println("end");
    }

    public static void main(String[] args) {
        homewoek3 homewoek3 = new homewoek3();
        new Thread(new Runnable() {
            @Override
            public void run() {
                homewoek3.f1();
            }
        }).start();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        homewoek3.b = false;
        //此时b的值已经变了，但是子线程还在转
        System.out.println("set b to false..");
    }
}
